package org.example.project_12.mapper;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.example.project_12.entity.Token;

import java.util.List;

@Mapper
public interface TokenMapper {
    
    /**
     * 插入令牌
     */
    int insert(Token token);
    
    /**
     * 根据ID查询令牌
     */
    Token selectById(@Param("id") Long id);
    
    /**
     * 根据令牌字符串查询令牌
     */
    Token selectByTokenString(@Param("tokenString") String tokenString);
    
    /**
     * 根据用户ID查询令牌
     */
    Token selectByUserId(@Param("userId") Long userId);
    
    /**
     * 根据条件查询令牌列表
     */
    List<Token> selectList(Token token);
    
    /**
     * 更新令牌
     */
    int update(Token token);
    
    /**
     * 根据ID删除令牌
     */
    int deleteById(@Param("id") Long id);
    
    /**
     * 根据用户ID删除令牌
     */
    int deleteByUserId(@Param("userId") Long userId);
    
    /**
     * 根据令牌字符串删除令牌
     */
    int deleteByTokenString(@Param("tokenString") String tokenString);
    
    /**
     * 删除过期令牌
     */
    int deleteExpiredTokens();
} 